const express = require('express')
const router = express.Router()
const passport = require('passport')

const Category = require('../models/Categorys')

//添加分类
router.post('/category/add', passport.authenticate('jwt', { session: false }), (req, res) => {
  const addCategorysData = req.body
  Category.findOne({ name: addCategorysData.name })
    .then(category => {
      if (category) { //如果已经有这个分类了
        return res.json({
          status: 400,
          msg: '创建分类失败，该分类已经存在'
        })
      } else {
        const newCategory = new Category({
          name: addCategorysData.name,
          parentId: addCategorysData.parentId
        })
        newCategory.save().then(newcategory => {
          res.json({
            status: 200,
            data: newcategory,
            msg: '创建分类成功'
          })
        }).catch(err => {
          return res.json({
            status: 400,
            msg: '创建分类异常，请稍后再试'
          })
        })
      }
    }).catch(err => {
      return res.json({
        status: 400,
        msg: '创建分类异常，请稍后再试'
      })
    })
})

//获取分类列表
router.get('/category/list', passport.authenticate('jwt', { session: false }), (req, res) => {
  //根据id获取对应级别的分类
  const parentId = req.query.parentId || '0'
  Category.find({ parentId }).then(categorys => {
    res.json({
      status: 200,
      data: categorys,
      msg: '查询分类列表成功'
    })
  }).catch(error => {
    console.error('获取分类列表异常', error)
    res.send({ status: 400, msg: '获取分类列表异常, 请重新尝试' })
  })
})

//更新分类名称
router.put('/category/update', passport.authenticate('jwt', { session: false }), (req, res) => {
  const { categoryId } = req.body
  console.log(req.body)
  Category.findOneAndUpdate(
    { _id: categoryId },
    { $set: req.body },
    { new: true }
  ).then(newCategory => {
    res.json({
      status: 200,
      data: newCategory,
      msg: '更新分类成功'
    })
  }).catch(error => {
    console.error('更新分类名称异常', error)
    res.json({ status: 400, msg: '更新分类名称异常, 请重新尝试' })
  })
})

//根据分类id获取分类名称
router.get('/category/info', passport.authenticate('jwt', { session: false }), (req, res) => {
  const categoryId = req.query.categoryId
  Category.findOne({ _id: categoryId })
    .then(category => {
      res.json({
        status: 200,
        data: category,
        msg: '获取分类成功'
      })
    }).catch(error => {
      console.error('获取分类信息异常', error)
      res.json({ status: 400, msg: '获取分类信息异常, 请重新尝试' })
    })
})

//删除分类
router.delete('/category/delete', passport.authenticate('jwt', { session: false }), (req, res) => {
  const categoryId = req.query.categoryId
  Category.findOne({ _id: categoryId }).then(category => {
    console.log(category)
    if (res.parentId != 0) {
      Category.findByIdAndDelete({ _id: categoryId })
        .then(doc => {
          res.json({
            status: 200,
            msg: '删除分类成功'
          })
        }).catch(err => {
          res.json({
            status: 400,
            msg: '删除分类出错了，请稍后再试'
          })
        })
    } else if (res.parentId == 0) {
      res.json({
        status: 400,
        msg: '请删除所有子分类之后再删除父分类'
      })

    }
  })

})

module.exports = router